/**
 * 发送消息到 iframe 中
 * @param {HTMLElement} iframe - iframe 元素
 * @param {*} message - 要发送的消息
 * @param {string} targetOrigin - 目标源地址
 */
export function sendMsgToChild(iframe, message, targetOrigin = '*') {
  if (!iframe) return;
  iframe.contentWindow.postMessage(message, targetOrigin);
}

/**
 * 发送消息到父窗口（如果当前窗口在 iframe 中）
 * @param {*} message - 要发送的消息
 */
export function sendMsgToParent(message) {
  const parent = window.parent;
  if (parent !== window) {
    parent.postMessage(message, '*');
  }
}

/**
 * 监听从 iframe 中接收到的消息
 * @param {function} callback - 消息回调函数
 */
let messageCallback = (callback) => {
  return (event) => {
    if (event.data && typeof event.data === 'object' && callback) {
      callback(event.data);
    }
  };
};

let curInstance = null;

export function initMessage(callback) {
  curInstance = messageCallback(callback);
  window.addEventListener('message', curInstance);
}

/**
 * 停止监听从 iframe 接收到的消息
 */
export function removeMessage() {
  console.warn('removeMessage');
  window.removeEventListener('message', curInstance);
}
